With conventional client-server database report processing a client application spawns a report process which executes on the client system. The report process processes a report by requesting data from a database server process executing on a database management system which in turn retrieves data from a database. Although relatively simplistic in implementation, this approach requires that a new report process be spawned for each requested report, which can strain the resources of the client system, particularly when many reports are requested simultaneously.
To reduce the processing burden on client systems, some contemporary database report processing systems have implemented a "multi-client report server" approach, which involves transferring report processing from the client system to a different processor, such as the database system processor itself. According to the multi-client report server approach, client applications submit report requests to a report server process, executing on the database system processor, which manages the processing of reports. This approach can significantly reduce the processing burden on client systems which is attributable to report processing. However, even with the multi-client report server approach, the same report is sometimes requested by several different clients. Regenerating the same report for each client wastes system resources and can strain system resources when the same report is requested simultaneously by different clients. For example, identical financial market reports are often requested by several different clients simultaneously.
One approach for avoiding having to regenerate the same report for different clients is the "pre-generation approach" which involves generating and storing all possible reports based upon all combinations of report parameters and then periodically regenerating and restoring the reports to keep them current. When a report request is received, a stored report matching the requested parameters is retrieved instead of regenerating the report. This approach reduces the impact on system resources because each report only has to be generated once per refresh period, regardless of how many times the report is requested.
Despite the benefits of the pre-generation approach, it is not without its disadvantages. Specifically, all possible report combinations must be generated and stored, irrespective of how frequently the reports are actually requested. As the number of report parameters increases, the number of possible reports can become exceedingly large, requiring more system resources to generate and store the reports. Moreover, some reports may never be requested which wastes system resources to generate and store the reports. Consequently, the pre-generation approach is best suited for use with a small number of report parameters.
In view of the system resources required to process database reports in multi-client report server environments and the limitations inherent in the pre-generation approach, a method of processing database reports in a multi-client report server system which reduces the burden on system resources attributable to database report processing is highly desirable.